/**
 * 用于存储默认背调数组
 */
const relateTypeArr = ['上级主管', '平级同事', '下属同事'];
const chineseNum = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
const templateObj = {
    // id: 140,  // 这个用于判断是否为服务端数据，有这个字段的为服务端返回
    fakeId: 0, // 这个用于标识假数据，构建对应关系
    // talentCode: "",
    // candidateId: 380,
    // employId: 270,
    // backgroundType: 1,
    // objectName: '姓名',
    // organizationName: '公司名称',
    // organizationEmail: '',
    relateType: '' // 这个直接存中文？？？！！！，'上级主管'，平级同事，下属同事
    // backgroundTime: '2021-07-19 19:29:29',
    // objectRemark: '',
    // evaluateRemark: '',
    // createUser: 'oa1414458836468297729',
    // objectContactType: 1,
    // objectContactInfo: '18850544294',
    // uploadFileUrl: '',
    // modifyFlag: 1
};

export default {
    namespace: 'defaultBGList',
    state: {
        defaultArr: [], // 默认生成的背调数组
        mobileBgArr: [], // H5背调联系人数据源
        mobileDefaultArr: [], // H5生成的默认联系人
        maxContactNum: 8, // 最高背调联系人数量
        isFirstInit: true, // 是否为首次创建数据
        showNotice: true, // 控制首次输入背调联系人时的弹窗
        tempBgNum: 0 // 临时保存背调联系人数量
    },
    reducers: {
        setTempBgNum(state, { newNum }) {
            return {
                ...state,
                tempBgNum: newNum
            };
        },
        setShowNotice(state, { showNotice }) {
            return {
                ...state,
                showNotice
            };
        },
        /**
         * 根据配置的背调数量，填写默认数据,backgroundNum为默认背调人数，startIndex为已有背调数据数量。
         * 用useeffect监听dva变化，更新用于渲染的数组？
         */
        init(state, { backgroundNum, startIndex = 0, ID_PREFIX }) {
            const newDefaultArr = [];
            for (let index = startIndex; index < backgroundNum; index += 1) {
                const element = { ...templateObj, fakeId: index };
                if (index <= 2) {
                    element.relateType = relateTypeArr[index];
                }
                element.id = `${ID_PREFIX}${index}`;
                newDefaultArr.push(element);
            }
            return {
                ...state,
                defaultArr: newDefaultArr
            };
        },
        /**
         * 初始化H5背调联系人数据
         */
        initMobile(state, { recruitTalentBackgrounds, backgroundNum, isEdit }) {
            const showNotice = !recruitTalentBackgrounds.length;
            if (!isEdit) {
                // 非编辑状态
                return {
                    ...state,
                    showNotice: false,
                    isFirstInit: false,
                    mobileBgArr: [...recruitTalentBackgrounds]
                };
            }
            if (state.isFirstInit) {
                // 首次进入页面
                const tempMobileDefaultArr = [];
                for (let index = recruitTalentBackgrounds.length; index < backgroundNum; index += 1) {
                    const element = { ...templateObj, fakeId: index };
                    if (index <= 2) {
                        element.relateType = relateTypeArr[index];
                    }
                    element.objectName = `联系人${chineseNum[index]}`;
                    tempMobileDefaultArr.push(element);
                }
                return {
                    ...state,
                    showNotice,
                    isFirstInit: false,
                    mobileBgArr: [...recruitTalentBackgrounds, ...tempMobileDefaultArr],
                    mobileDefaultArr: tempMobileDefaultArr
                };
            }
            return {
                // 二次进入页面（前端路由控制下）
                ...state,
                mobileBgArr: [...recruitTalentBackgrounds, ...state.mobileDefaultArr]
            };
        },
        /**
         * 根据下标删除一个
         */
        deleteOne(state, { index }) {
            const tempMobileBgArr = [...state.mobileBgArr];
            const tempMobileDefaultArr = [...state.mobileDefaultArr];
            const deltaIndex = index - (state.mobileBgArr.length - state.mobileDefaultArr.length);
            tempMobileBgArr.splice(index, 1);
            if (deltaIndex >= 0) {
                tempMobileDefaultArr.splice(deltaIndex, 1);
            }
            return {
                ...state,
                mobileBgArr: tempMobileBgArr,
                mobileDefaultArr: tempMobileDefaultArr
            };
        }
    }
};
